type #Foo {
    a: String,
    b: String
}
default {
    a: 'Hello',
    b: 'World'
};

const Data1: String 'VerboseData01
{} :main:Foo:
	a string
		"123"
	b string
		"456"';

const Data2: String 'VerboseData01
{} :main:Foo:
	b string
		"John Smith"';

const Data3: String 'VerboseData01
{} :main:Foo:';

function describe-deserialized:
    &(String) => Async
    &(data) => { crash-on-error
        \ await let foo := { #Foo@deserialize { encode data } },
        let { a, b } := foo,
        \ await { sys::println { "(?, ?)" ({ quote a }, { quote b }) } },
        { return () }
    };

entry
    { concat ([Data1,Data2,Data3] map describe-deserialized) }
        .{wait-complete};


